iT邦幫忙

2024 iThome 鐵人賽

DAY 30
2
Modern Web

如何詠唱JavaScript的Math咒語系列 第 30

[Day30]-人生就是不斷的詠唱,一直到你說不出話為止。

  • 分享至 

  • xImage
  •  

為什麼是咒語?

為什麼會說是唸咒語呢?

某天小華正在寫龜兔賽跑的模擬,最後算出了烏龜跑的時間跟兔子跑的時間,需要將兩個時間相減就能得到跑得較快的選手能夠休息的時間,但此時卻需要去判斷用大的減掉小的,才不會得到負數時間,這時候多管閒事的小銘就出現了,他告訴小華:「你只要用『寐偲,阿柏梭魯』就行啦!不需要判斷誰大誰小。」,此時小華心裡想著:「りしれ供さ小?」,但還是很禮貌地問小銘那個是什麼意思,經過小銘簡單的講解後才知道那是對數字取絕對值的意思!對小華來說,第一次聽到「寐偲,阿柏梭魯」肯定如同咒語般完全不知道在供さ小,但因為小銘經過一番修行過後已經成為了一名合格的初級寐偲巫師,所以可以輕鬆的使用各種寐偲咒語。

經過30天的咒語詠唱,大家肯定意猶未盡吧!其實不只是Math,還有很多標準函式庫的咒語可以去詠唱,不過很遺憾這個系列要暫時跟大家說再見了,什麼時候要再重啟就得問庫拉皮卡何時能夠下船了~

詠唱筆記

[Day02]-數學中的防鎖死系統Math.abs()
[Day03]-可以跟你要簽名嗎Math.sign()
[Day04]-斜邊分之鄰邊,我的鄰居是邊邊Math.cos()
[Day05]-成為超級sin亞人Math.sin()
[Day06]-今Tangent備了Math.tan()
[Day11]-這球投進了耶!arcsin到的啦~Math.asin()
[Day12]-甜甜的滋味,相反餘弦鹹的淚水Math.acos()
[Day13]-反三角尚未成功,阿天卷仍須努力Math.atan()
[Day14]-阿天卷二世的誕生Math.atan2()
[Day15]-Math.sqrt()、Math.cbrt()?我沒梗了,需要一台電鋸梗梗梗
[Day16]-看著天花板你會想到什麼?我會想到Math.ceil()
[Day17]-腳踏實地的Math.floor()
[Day18]-斬斷小數點的連結Math.trunc()
[Day19]-輪到你的回合。Math.round()
[Day20]-跟妳心思一樣,猜不透的Math.random()
[Day21]-傳說中的,阿姆斯特朗炫風噴射阿姆斯特朗,砲。Math.pow()
[Day22]-我真的愛莫能助...Math.imul()
[Day25]-奢踢兔竟然出現在函式名稱上啦!!!Math.clz32()
[Day26]-給點面子,log臉吧~Math.log10()
[Day29]-這鍋子不知道在嗨什麼。Math.hypot()

想水一下就來看規範

[Day07]-好像顧著唸咒語,忽略了一些細節
[Day08]-在兩個不同宇宙之間切換的咒語?
[Day09]-關於底下那些顏文字
[Day10]-再靠近一點點,隨便你要幹嘛

怎麼突然在位元運算?

[Day23]-向左走,向右走...先向左就好。 << 位元運算子
[Day24]-雖然愛莫能助,但還是盡力理解了。二進位的乘法

寐偲靜態屬性

[Day27]-歐拉歐拉歐拉歐拉!!!Math.E
[Day28]-他們就靜靜的躺在那。Math的靜態屬性

遺珠之憾

「這世界如此美麗,是源於她的不完美。」

沒錯,經歷了這30天,肯定沒有當初想的順利XD,原本預計將所有的Math函式都講一遍且深入探討他們的實用層面,但最後淪為走馬看花、突發奇想。即使如此,還是從這30天得到了很多,無論是重返幾年前研究數學的時光,還是透過翻找規範及文件來獲得解答,亦或是在實作中找到樂趣,這些都在我的人生中留下了痕跡。

講了這麼多只是為了掩蓋我沒有好好介紹完所有的函式啦!現在就來介紹本次的遺珠之憾吧~

嗨頗八里系列

首先是我看了10分鐘就宣告放棄的「嗨頗八里」系列:

  • Math.sinh()「寐偲,嗨頗八里,賽」
  • Math.cosh()「寐偲,嗨頗八里,摳賽」
  • Math.tanh() 「寐偲,嗨頗八里,天卷」
  • Math.asinh()「寐偲,嗨頗八里,啊賽」
  • Math.acosh()「寐偲,嗨頗八里,啊摳賽」
  • Math.atanh() 「寐偲,嗨頗八里,啊天卷」

這個系列是跟雙曲函數有關,然後結合到三角函數後我就覺得這肯定會花太多時間,所以只好之後有緣再回來看看囉~

歐拉系列

接下來登場的是歐拉系列:

  • Math.exp()「寐偲,一絲頗難修」
  • Math.expm1()「寐偲,一絲頗難修,賣努斯,萬」

這兩個是指數函數,歐拉常數的x次方,跟歐拉常數的x次方減一,雖然運用很廣,但是小弟我研究不出個所以然,可能牽扯到別的領域,所以也是交給大家去發揮啦~

另一個次元系列

再來是將數字轉成其他位元再做取整系列:

  • Math.f16round()
  • Math.fround()

Math.f16round()似乎不在 ECMAScript 的規範之中,滿奇異的就留給大家去探索吧!
至於Math.fround(),將數字轉為32位元再做取整,因為我已經受夠了32位元,相信大家應該也覺得差不多了吧XDD

好像還算容易系列

找最大值與找最小值的咒語使用上應該不會有太大問題,放入一連串的數字他就會回傳你想要的最大值或最小值了,當然還是有一些小細節可以關注,但礙於時間關係這次就沒辦法帶著大家一起研究啦,有興趣就跟著之前的步調去看規範應該也能看出一些心得的!

  • Math.max()
  • Math.min()

後記

雖然這30天下來的內容可能不是那麼實用,但對我自己來說也學習到了很多,有時候可能會偏題,去鑽入研究更底層的東西,但每懂了一點,好像就更了解這個世界一點了!我能做的就是不斷地去邂逅各式各樣的知識,讓自己每一秒都比上一秒更強大!

幹話講完了,今天過後當然是要躺在床上先大睡特睡啦!

有關這個系列的各種疑問或是指教一樣非常歡迎留言或是寄信給我一起討論喔!

各位有緣再相見啦~


上一篇
[Day29]-這鍋子不知道在嗨什麼。Math.hypot()
系列文
如何詠唱JavaScript的Math咒語30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
橘子
iT邦新手 4 級 ‧ 2024-10-15 00:15:13

免っかわ来じっ套ಠಿ⁠_⁠ಠ

0
Chris
iT邦新手 3 級 ‧ 2024-10-16 18:06:22

很棒的三十天

我要留言

立即登入留言